#include <stdio.h>
#include <pthread.h>
#include <unistd.h>  // 用于sleep函数（调试用）

// 全局变量存储主线程ID
pthread_t main_thread_id;
// 全局变量保存主线程退出值
int quit;
// 互斥锁（本例中实际无需加锁，仅演示正确初始化）
pthread_mutex_t g_number_mutex = PTHREAD_MUTEX_INITIALIZER;  // 静态初始化

// 子线程函数：等待主线程结束后输出退出值
void *routine(void *arg) {   
    printf("启动子线程\n");
    // 子线程等待主线程结束（接合主线程）
    if (pthread_join(main_thread_id, NULL) != 0) {
        perror("pthread_join failed");
        return NULL;
    }
    // 输出主线程的退出值
    printf("主线程的退出值为: %d\n", quit);
    return NULL;
}

int main(void) {   
    quit = 66;  // 设置主线程退出值
    pthread_t tid;
    main_thread_id = pthread_self();  // 获取主线程ID

    // 初始化互斥锁（静态初始化已完成，此处可省略；动态初始化用pthread_mutex_init）
    // if (pthread_mutex_init(&g_number_mutex, NULL) != 0) { ... }

    // 创建子线程
    if (pthread_create(&tid, NULL, routine, NULL) != 0) {
        perror("pthread_create failed");
        return 1;
    }

    // 让主线程稍等，确保子线程已启动并进入pthread_join（仅调试用，实际无需）
    sleep(2);

    printf("主线程结束\n");
    // 主线程退出（return 0会触发进程终止，需确保子线程能在进程终止前执行完）
    return 0;
}